[アップデート] AWS Amplify のファイアウォール(WAF)機能がついにプレビューで登場しました

[アップデート] AWS Amplify のファイアウォール(WAF)機能がついにプレビューで登場しました

Clock Icon2024.12.19

いわさです。

Amplify 最大の課題が「WAF をネイティブにサポートしていない」(CloudFront をもう一段追加するなどが必要だった)という点だったのですが、以下のチケットで近日中のリリースが待たれる状況でした。

https://github.com/aws-amplify/amplify-hosting/issues/36

昨日アップデートがあり、プレビューで遂に使えるようになりました。
What's New at AWS はまだですが、AWS API も更新アナウンスが出ており、Amplify 公式ドキュメントにもページが追加されました!

本日時点の仕様

以下公式ドキュメントに出来るようになったことや制限事項が記載されています。

https://docs.aws.amazon.com/amplify/latest/userguide/WAF-integration.html

要は Amplify が管理する AWS WAF の Web ACL が関連付け出来るようになりました。
Amplify コンソール上から Web ACL の自動作成・ルールの設定はしてくれますが、Web ACL を直接カスタマイズすることも出来そうです。
また、複数の Ampify アプリケーションで Web ACL は共有可能っぽいことが書いてあります。コスト抑制も出来そうです。

注意事項としては、Amplifi と WAF を同一アカウントで作成する必要があるという点や、すべてのブランチ・ドメインに強制適用されるという点でしょうか。
本日時点では運用ブランチだけ適用したい、IP 管理したいみたいな時に使えなさそうです。

やってみた

作成済みの Amplify アプリケーションに対して設定してみます。
コンソールにアクセスすると以下のプレビューメニューが新しく追加されていました。

1F10BB4D-390B-4716-A55A-40BEF33DB55D.png

選択してみるとファイアウォールを追加する画面が表示されます。デフォルトはオフで、既存アプリケーションも全てオフの状態です。

0303CD03-2141-4B2D-87C0-359064C89D46.png

推奨ルールの有効化

試しに推奨保護のチェックだけいれて有効化してみましょう。
関連付けに少し時間がかかります。Associating がステータスが Enabled ステータスになれば完了です。

44CC6FCD-D195-4B6F-81B4-2B91A1D48495.png

920450E3-C85C-4B17-B81F-1E2323E427C1.png

AWS WAF コンソールを見てみると Global(CloudFront) に Web ACL が作成されていることが確認出来ました。

2D31075B-9439-4311-9E64-897FEDECA15D.png

ルールを確認してみると次のようなマネージドルールが設定されていました。
推奨ルールについては ALB や CloudFront と同じ感じですね。

  • AWS-AWSManagedRulesAmazonIpReputationList
  • AWS-AWSManagedRulesCommonRuleSet
  • AWS-AWSManagedRulesKnownBadInputsRuleSet

09609488-E09E-4CA0-97A1-569BE909001A.png

関連付けリソースタブには表示されない

なお、本日時点では関連リソースタブに Amplify リソースの情報は表示されませんでした。
一見何も関連付けされていない Web ACL のように見えますが、使用されている場合もあるということです。これはちょっと面倒ですね。

2EEB283E-27A3-4F42-8B16-E314790F7671.png

ただ、Amplify アプリケーションで関連付けられている Web ACL は削除は出来ません。
間違って消すことは無いのは安心ですが、関連付けされていないはずなのになぜか削除出来ない...みたいなことがあり得るので注意したいところ。

E47C9171-B703-44A6-ABCB-C4BA840C0F66.png

amplifyapp.com や IP アドレス保護など

「推奨するファイアウォール保護」以外にも Amplify コンソール上にいくつかオプションがありますね。
それらを有効化したときの挙動も見ておきますか。

DB9DAAEE-C04D-437F-A2CC-06EC81209028.png

上記 2 点を有効化すると、次のルールが追加されました。普段我々がよくやる IP アドレスリストの管理やドメイン制限ですね。

49CC7341-D2DB-4CB2-B75D-C64BC8013D24.png

普通に IP セットが作成されて、後はルール側でブロックか許可か構成する感じです。

F640DB74-CACC-4F6B-B6CF-68A034FB5C45.png

国の保護については Amplify コンソール上から対象の国を複数選択します。

69EF9CDB-F885-4871-AFB0-A4DB5E3A76BC.png

これも Web ACL 側で国から判定するカスタムルールが作成される感じですね。なるほど。

789200D3-0BBC-4449-B642-1F6D89AF371C.png

他の Amplify アプリケーションと同じ Web ACL を作成する

なお、Amplify で作成した Web ACL が存在している場合は、次のように「既存の WAF 設定を使用」という選択が可能になります。

7CFDD78A-EAAE-4270-87DB-EAE105A0713B.png

Web ACL 自体は存在するだけでコストが発生しますので、Web ACL の数を抑えたいあるいは共有のルールを採用したいなどの場合に使えそうです。

さいごに

本日は AWS Amplify のファイアウォール(WAF)機能がついにプレビューで登場したので有効化してみました。

Amplify ホスティング周りって透過的にリソース管理されているので、どんな感じになるのかな?と思っていたのですが、普通に Web ACL が作成されました。公式ドキュメントにはレートベース設定も出来るなど言及されていたので、ルールのカスタマイズをしても良さそうですね。非常に使いやすいのではないでしょうか。

「Amplify Gen2 の L3 で CloudFront + WAF がデプロイされるだけだったらどうしよう...」と少し嫌な予感がしていたのですが、杞憂でした。
予想を上回る形のものがリリースされてとても良いです。

プレビュー中なので、どんどん使ってフィードバックしましょう。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.